﻿'''
力扣：12
七个不同的符号代表罗马数字，其值如下：
符号值
I   1    4  IV
V   5    9  IX
X   10   40 XL
L   50   90 XC
C   100  400    CD
D   500  900    CM
M   1000
罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则：
- 如果该值不是以 4 或 9 开头，请选择可以从输入中减去的最大值的符号，将该符号附加到结果，减去其值，然后将其余部分转换为
罗马数字。
- 如果该值以4或9开头，使用 减法形式，表示从以下符号中减去一个符号，例如 4 是 5 (V) 减 1 (I): IV ，9 是 10 (X) 减 1 (I)：
IX。仅使用以下减法形式：4 (IV)，9 (IX)，40 (XL)，90 (XC)，400 (CD) 和 900 (CM)。
- 只有 10 的次方（I, X, C, M）最多可以连续附加 3 次以代表 10 的倍数。你不能多次附加 5 (V)，50 (L) 或 500 (D)。如果需要
将符号附加4次，请使用 减法形式。
给定一个整数，将其转换为罗马数字。 
示例 1：
输入：num = 3749
输出： "MMMDCCXLIX"
解释：
3000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)
 700 = DCC 由于 500 (D) + 100 (C) + 100 (C)
  40 = XL 由于 50 (L) 减 10 (X)
   9 = IX 由于 10 (X) 减 1 (I)
注意：49 不是 50 (L) 减 1 (I) 因为转换是基于小数位
示例 2：
输入：num = 58
输出："LVIII"
解释：
50 = L
 8 = VIII
示例 3：
输入：num = 1994
输出："MCMXCIV"
解释：
1000 = M
 900 = CM
  90 = XC
   4 = IV
提示：
- 1 <= num <= 3999
思路：
建立数字到罗马数字的映射，并按从大到小排序，注意加入4，9，40，90，400，900，然后从大到小遍历，数字大于等于当前罗马数字则
加入，小于则转到下一个，直到数字为0
'''
value_symbol = [(1000,'M'),(900,'CM'),(500,'D'),(400,'CD'),(100,'C'),(90,'XC'),(50,'L'),(40,'XL'),(10,'X'),(9,'IX'),
                (5,'V'),(4,'IV'),(1,'I')]
try:
    while True:
        #读取输入
        num = int(input())
        result = ""
        for val in value_symbol:
            while num >= val[0]:
                result += val[1]
                num -= val[0]
            if num == 0:
                break
        print(result)
except EOFError:
    pass